import axios from 'axios'
import store from '@/store'
import router from '@/router'
// 优化-加载-loading效果
// 1.按需导入loading
import { Loading } from 'element-ui'
const instance = axios.create({
  baseURL: 'http://www.liulongbin.top:3008'
})
// 2,全局定义loadingInstance变量
let loadingInstance

// 3.请求拦截器中第一个回调函数中开启loading效果
// 设置token-每次请求都加上token
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  if (config.url.startsWith('/my')) {
    config.headers.Authorization = store.state.uers.token
  }
  // 开启loading效果
  loadingInstance = Loading.service({
    lock: true,
    text: 'Loading',
    spinner: 'el-icon-loading',
    background: 'rgba(0, 0, 0, 0.7)'
  })
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 设置--如果是过期的token值,就1.清空token 2.清空用户信息 3.退回登录页面
// 4.响应拦截器中第一个,第二个回调函数中关闭loading效果//
instance.interceptors.response.use(function (response) {
  // 以服务的方式调用的 Loading 需要异步关闭
  loadingInstance.close()
  return response
}, function (err) {
  // 以服务的方式调用的 Loading 需要异步关闭
  loadingInstance.close()

  if (err.response.status === 401) {
    store.commit('uers/zhtoken', '')
    store.commit('uers/initUers', {})
    router.push('/login')
  }
})
export default instance
